Videos, die du dir ansiehst, werden möglicherweise zum TV-Wiedergabeverlauf hinzugefügt und können sich damit auf deine TV-Empfehlungen auswirken. Melde dich auf einem Computer in YouTube an, um das zu vermeiden.
Hey there, my name's Trever.
A great idea starts as a drop of inspiration, but just as the rain shapes the earth, it’s the consistent nurturing, effort, and perseverance that shapes that idea into something extraordinary.
Shaped by Rain Studios is my solo venture that exists to help driven, creative people build projects they’re passionate about through practical education, tools, and thought-provoking content.
I hope the things that I create will help you in your own creative endeavors!
This video covers one of the many ways to go about creating a Quest System in Unity. The Quest System focuses on RPG-style quests and includes persisting the state of all quests between playthroughs.
…...mehr
Below is a bug fix regarding this tutorial.
1. A bug was found at 41:48 for the CheckRequirementsMet() method. As written in the video, it will only actually use the last prerequisite. Instead, we can fix this by breaking out of the for loop when we hit a prerequisite that's false. See below:
// check quest prerequisites for completion
foreach (QuestInfoSO prerequisiteQuestInfo in quest.info.questPrerequisites)
{
if (GetQuestById(prerequisiteQuestInfo.id).state != QuestState.FINISHED)
{
meetsRequirements = false;
// add this break statement here so that we don't continue on to the next quest, since we've proven meetsRequirements to be false at this point.
break;
}
}
====================
Hope you found the video to be helpful! You're welcome to come by my Discord server and ask questions, suggest a video topic, or just hang out with others working on creative projects! ➔ https://discord.gg/99gcnaHFf9
The GOAT is back!!
I followed all of your previous tutorials, and I can't wait to see how I can use this quest system as well.
Thank you for your hard work!
This is, by far, one of the best videos for gamedev information I've seen yet. Very clear, SUPER clean, and the architecture and design patterns used are perfect for the use case. Very impressive. Thank you for taking the time to make this. :)
Not nearly enough subscribers. The amazing way the observer pattern was used with events not tying any script to another besides the game event manager which makes sense. BTW instead of your if event != null check leave it out and use: eventName?.Invoke(passed parameters in here) that statement is saying if anyone is subscribed to me invoke my event.
Anyways Amazing job! I really liked the defensive programming tactics used and will use them a lot more going forward. Will really help with the bug fixing! I learned so much and was able to implement it with no issues. Watched it about 4 times all the way through so I could truly understand how classes were used and instantiated. Thanks for your time and effort! Look forward to more from you in the future!
This quest system is so versatile and complex that any game can use it with specific minor changes, so thanks a lot! I will use it in my openworld rpg.
What a lifesaver. Was absolutely bashing my head against this problem. Couldn't find a good quest system to import because they were too complicated or fiddly for my project, but trying to write one from scratch was doing my head in. This implementation is perfect for what I need, and the tutorial is fantastic. You're a legend, mate
Man your not brakeys, you're better! i swear your tutorials have been getting me through a school project for a game, ill try to send u its link when I finished for u to check it out!
Very well put video, it was beyond helpful. Thank you!
As a suggestion, I would recommend not to use the Resources folder for this and instead create the dictionary using addressables and the LoadAssetsAsync method.
What are your thoughts on that?
Thank you so much for this video and all the others. They are a joy to follow and I've learned so much. I'm currently building a Paper Mario style RPG and getting to learn from you while making progress on my game is very rewarding.
Intro | Disclaimer and Prerequisite Knowledge | Sponsorship | Defining a Quest | How we'll Store Static (non-changing) Data | How Quest Steps will work | How we'll Manage State Data | How we'll Manage Quests | Running through an example | Project Overview | Storing Static (non-changing) Data | Creating a Quest Step | Managing State Data | Managing Quests | Creating Quest Management Events | Creating the Quest Point | Creating the Quest Icon Visual | Managing Quest Requirements | Starting a Quest | Advancing a Quest | Finishing a Quest | Ensure Multiple Steps are Working | How we'll Persist Quest State | Managing Quest Step State | Saving Quest Data | Loading Quest Data | Disabling Persistence for Development | Creating One More Quest | Outro
Intro | How Ink works with Unity | Dialogue System Design | Project Setup Overview | Import TextMeshPro | Install/Import Ink | Creating an Ink file | Creating an NPC | Triggering Dialogue | Creating the Dialogue Panel | Displaying Dialogue | Freezing the Player | Stopping the Dialogue Trigger | Fixing the player jump issue | Creating the Choices UI | Code to support Choices | Ink file with Choices | Setting a First Selected Choice | Making a Choice | Adding new NPC's | Outro
Intro | Ink External Functions | External Functions vs Tags | Project Overview | Implementing an External Function | Playing Emotes Example | External Functions at the end of the dialogue | Code Cleanup | Outro
Intro | Save & Load System Design | Creating initial Game Data | Stubbing out the Core of the System | When to Save and Load | Passing Data to other Scripts | Reading and Writing to a File | Adding more Data to be Saved | Saving Collectables in a Dictionary | Serializing a Dictionary to JSON | Encrypting the Data | Outro
What this video is about | UML Diagram explanation | UI setup | Coding the basics | Custom Editor | Handling the UI | How to connect it to a real game | Outro
Intro | How it's going to work | Audio clip considerations | Project overview | Playing a sound every character | Dealing with overlapping sound | Changing the frequency | Randomizing the pitch | Randomizing multiple sound clips | Making the audio predictable (how it'll work) | Generating a hashcode | Making the audio predictable (implementation) | Supporting multiple speakers (how it'll work) | Supporting multiple speakers (implementation) | Replications disclaimer | Celeste audio replication | Animal crossing audio replication | Outro
Intro | Removing the 'ref' keyword | Removing the sceneUnloaded event (MissingReferenceException) | Setting the first selected button alternative | Persisting data for Inactive (disabled) GameObjects | Persisting data for Scriptable Objects | Deleting Data for a Save Slot | Creating a Confirmation Popup | Improving Auto Saving | Backing up Data Files | Outro
Intro | How it's going to work | Project Overview | Adding to the UI | Creating an Ink file with Tags | Parsing the Tags | Setting the Speakers Name | Setting the Portrait | Setting the Layout | Resetting to Defaults | Outro
Intro | How it's going to work | Setting up the globals ink file | Creating the variable observer | Initializing the dictionary | Maintaining the dictionary | Referencing the dictionary | Outro